package org.dromara.nursing.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.nursing.domain.ElderOutstandingFees;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 欠费记录视图对象 ms_elder_outstanding_fees
 *
 * @author Xue
 * @date 2025-04-09
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ElderOutstandingFees.class)
public class ElderOutstandingFeesVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 记录ID
     */
    @ExcelProperty(value = "记录ID")
    private Long recordId;

    /**
     * 老人姓名
     */
    @ExcelProperty(value = "老人姓名")
    private String elderName;

    /**
     * 费用来源
     */
    @ExcelProperty(value = "费用来源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_fee_source")
    private String feeSource;

    /**
     * 费用描述
     */
    @ExcelProperty(value = "费用描述")
    private String feeDescription;

    /**
     * 计费日期
     */
    @ExcelProperty(value = "计费日期")
    private Date billDate;

    /**
     * 应付日期
     */
    @ExcelProperty(value = "应付日期")
    private Date dueDate;

    /**
     * 费用总额
     */
    @ExcelProperty(value = "费用总额")
    private Long totalAmount;

    /**
     * 已付金额
     */
    @ExcelProperty(value = "已付金额")
    private Long paidAmount;

    /**
     * 未付金额
     */
    @ExcelProperty(value = "未付金额")
    private Long outstandingAmount;

    /**
     * 支付状态
     */
    @ExcelProperty(value = "支付状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "payment_status")
    private String paymentStatus;

    /**
     * 最后付款日期
     */
    @ExcelProperty(value = "最后付款日期")
    private Date lastPaymentDate;

    /**
     * 付款截止日期
     */
    @ExcelProperty(value = "付款截止日期")
    private Date paymentDeadline;

    /**
     * 是否逾期
     */
    @ExcelProperty(value = "是否逾期")
    private String isOverdue;

    /**
     * 逾期天数
     */
    @ExcelProperty(value = "逾期天数")
    private Long overdueDays;

    /**
     * 催款次数
     */
    @ExcelProperty(value = "催款次数")
    private Long reminderCount;

    /**
     * 最后催款日期
     */
    @ExcelProperty(value = "最后催款日期")
    private Date lastReminderDate;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remarks;


}
